<!DOCTYPE html>
<html>

<head>
  <title>Table accessible tree and table interface tests for HTML tables</title>
  <link rel="stylesheet" type="text/css"
        href="chrome://mochikit/content/tests/SimpleTest/test.css" />

  <script type="application/javascript"
          src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script>

  <script type="application/javascript"
          src="../common.js"></script>
  <script type="application/javascript"
          src="../role.js"></script>
  <script type="application/javascript"
          src="../table.js"></script>

  <script type="application/javascript">
    function doTest()
    {
      //////////////////////////////////////////////////////////////////////////
      // column headers from thead and tfoot

      cellsArray = [
        [kColHeaderCell, kColHeaderCell, kColSpanned],
        [kRowSpanned,    kColHeaderCell, kColHeaderCell],
        [kDataCell,      kDataCell,      kDataCell],
        [kColHeaderCell, kColHeaderCell, kColHeaderCell]
      ];

      testTableStruct("table1", cellsArray);

      //////////////////////////////////////////////////////////////////////////
      // row and column headers from thead and @scope

      var cellsArray = [
        [kColHeaderCell, kColHeaderCell, kColHeaderCell],
        [kRowHeaderCell, kDataCell, kDataCell],
        [kRowHeaderCell, kDataCell, kDataCell]
      ];

      testTableStruct("table2", cellsArray);

      //////////////////////////////////////////////////////////////////////////
      // caption and @summary

      cellsArray = [
        [kColHeaderCell, kColHeaderCell, kColHeaderCell, kColHeaderCell],
        [kRowHeaderCell, kDataCell,      kDataCell,      kDataCell],
        [kRowHeaderCell, kDataCell,      kDataCell,      kDataCell]
      ];

      testTableStruct("table3", cellsArray, kNoColumnHeader,
                      "Test Table",
                      "this is a test table for nsIAccessibleTable");

      //////////////////////////////////////////////////////////////////////////
      // row and column spans

      cellsArray = [
        [kDataCell, kDataCell,   kDataCell,   kColSpanned, kDataCell, kDataCell,   kDataCell, kDataCell],
        [kDataCell, kDataCell,   kDataCell,   kDataCell,   kDataCell, kDataCell,   kDataCell, kRowSpanned],
        [kDataCell, kDataCell,   kColSpanned, kDataCell,   kDataCell, kDataCell,   kDataCell, kRowSpanned],
        [kDataCell, kRowSpanned, kSpanned,    kDataCell,   kDataCell, kRowSpanned, kDataCell, kRowSpanned]
      ];

      testTableStruct("table4", cellsArray);

      SimpleTest.finish();
    }

    SimpleTest.waitForExplicitFinish();
    addA11yLoadEvent(doTest);
  </script>
</head>
<body>

  <a target="_blank"
     title="Fix our nsHTMLAccessibleTable class so GetIndexAt and GetRowAtIndex and GetColumnAtIndex behave consistently"
     href="https://bugzilla.mozilla.org/show_bug.cgi?id=410052">Mozilla Bug 410052</a>
  <a target="_blank"
     title="GetCellDataAt callers that expect an error if no cell is found are wrong"
     href="https://bugzilla.mozilla.org/show_bug.cgi?id=417912">Mozilla Bug 417912</a>
  <a target="_blank"
     title="create accessibles for HTML tr"
     href="https://bugzilla.mozilla.org/show_bug.cgi?id=493695">Mozilla Bug 493695</a>
  <a target="_blank"
     title="implement IAccessibleTable2"
     href="https://bugzilla.mozilla.org/show_bug.cgi?id=512424">Mozilla Bug 512424</a>

  <p id="display"></p>
  <div id="content" style="display: none"></div>
  <pre id="test">
  </pre>

  <table id="table1">
    <thead>
      <tr>
        <th rowspan="2">col1</th><th colspan="2">col2</th>
      </tr>
      <tr>
        <th>col2sub1</th><th>col2sub2</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td>cell1</td><td>cell2</td><td>cell3</td>
      </tr>
    </tbody>
    <tfoot>
      <tr>
        <th>col1</th><th>col2</th><th>col3</th>
      </tr>
    </tfoot>
  </table>

  <table id="table2">
    <thead>
      <tr>
        <th id="table1_0">col1</th>
        <th id="table1_1">col2</th>
        <td id="table1_2" scope="col">col3</td>
      </tr>
    </thead>
    <tbody>
      <tr>
        <th id="table1_3">row1</th>
        <td id="table1_4">cell1</td>
        <td id="table1_5">cell2</td>
      </tr>
      <tr>
        <td id="table1_6" scope="row">row2</td>
        <td id="table1_7">cell3</td>
        <td id="table1_8">cell4</td>
      </tr>
    </tbody>
  </table>

  <table id="table3" border="1"
         summary="this is a test table for nsIAccessibleTable">
    <caption>Test Table</caption>
    <thead>
      <tr>
        <th></th>
        <th>columnHeader_1</th>
        <th id ="col2a">columnHeader_2</th>
        <th>columnHeader_3</th>
      </tr>
    </thead>
    <tr>
      <th id="row2a">rowHeader_1</th>
      <td id="row2b">row1_column1</td>
      <td id ="col2b">row1_column2</td>
      <td id="row2c">row1_column3</td>
    </tr>
    <tr>
      <th>rowHeader_2</th>
      <td>row2_column1</td>
      <td id ="col2c">row2_column2</td>
      <td>row2_column3</td>
    </tr>
  </table>

  <table id="table4" cellpadding="2" cellspacing="2" border="1" width="50%">
    <tbody>
      <tr>
        <td><br></td>
        <td><br></td>
        <td rowspan="1" colspan="2"><br></td>
        <td><br></td>
        <td><br></td>
        <td><br></td>
        <td rowspan="4" colspan="1"><br></td>
      </tr>
      <tr>
        <td><br></td>
        <td><br></td>
        <td><br></td>
        <td><br></td>
        <td><br></td>
        <td><br></td>
        <td><br></td>
      </tr>
      <tr>
        <td><br></td>
        <td rowspan="2" colspan="2">c1</td>
        <td><br></td>
        <td><br></td>
        <td rowspan="2" colspan="1"><br></td>
        <td><br></td>
      </tr>
      <tr>
        <td><br></td>
        <td><br></td>
        <td><br></td>
        <td><br></td>
      </tr>
    </tbody>
  </table>

</body>
</html>
